import { Component, ChangeDetectionStrategy } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card';
import { MatIconModule } from '@angular/material/icon';
import { DialogService } from '@core/services/dialog.service';

/**
 * 弹窗演示组件
 * 
 * 演示各种对话框的使用方式
 */
@Component({
  selector: 'app-dialogs',
  standalone: true,
  imports: [CommonModule, MatButtonModule, MatCardModule, MatIconModule],
  changeDetection: ChangeDetectionStrategy.OnPush,
  templateUrl: './dialogs.component.html',
  styleUrls: ['./dialogs.component.scss']
})
export class DialogsComponent {

  constructor(private dialogService: DialogService) {}

  /**
   * 显示确认对话框
   */
  showConfirmDialog(): void {
    this.dialogService.confirm(
      '确认操作',
      '确定要执行此操作吗？此操作无法撤销。',
      null,
      null,
      false
    ).subscribe(result => {
      if (result) {
        console.log('用户点击了确认');
      } else {
        console.log('用户点击了取消');
      }
    });
  }

  /**
   * 显示提示对话框
   */
  showAlertDialog(): void {
    this.dialogService.alert(
      '操作成功',
      '您的操作已成功完成！',
      null,
      false
    ).subscribe(result => {
      console.log('用户关闭了提示');
    });
  }

  /**
   * 显示错误对话框
   */
  showErrorDialog(): void {
    try {
      // 模拟一个错误
      throw new Error('这是一个示例错误');
    } catch (error) {
      this.dialogService.errorAlert(
        '发生错误',
        '操作失败，请查看详细信息。',
        error,
        null,
        false
      ).subscribe(result => {
        console.log('用户关闭了错误提示');
      });
    }
  }

  /**
   * 显示全屏确认对话框
   */
  showFullscreenDialog(): void {
    this.dialogService.confirm(
      '全屏对话框',
      '这是全屏模式的确认对话框。',
      '取消',
      '确定',
      true
    ).subscribe(result => {
      console.log('全屏对话框结果:', result);
    });
  }
}
